package com.lqq.chapter12;

import java.util.concurrent.CompletableFuture;

/**
 * @Author lqq677
 * @Date 2021/8/12 22:38
 * @Description 主线程里面创建一个 CompletableFuture，然后主线程调用 get 方法会阻塞，最后我们在一个子线程中使其终止
 */
public class CompletableFutureDemo1 {

    public static void main(String[] args) throws Exception{

        CompletableFuture<String> future = new CompletableFuture<>();

        new Thread(() ->{
            try {
                System.out.println(Thread.currentThread().getName() + "子线程开始干活");
                //线程睡5秒
                Thread.sleep(5000);
                //在子线程中完成主线程
                future.complete("success");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                }, "A").start();

        //主线程调用get方法阻塞，get方法可以一直阻塞直到子任务结束然后获取结果
        System.out.println("主线程调用get方法获取结果为: " +future.get());
        System.out.println("主线程完成，阻塞结束！！！");
    }
}
